package com.stylefeng.guns.modular.util;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;

/**
 * 字符串拆分工具（根据： ；拆分） ClassName: MySplitUtil
 * 
 * @Description: TODO
 * @author zhangyaoyao
 * @date 2017年12月27日
 */
public class MySplitUtil {
	public static HashMap<String, Integer[]> splitToMap(List<String> list) {
		HashMap<String, Integer[]> map = new LinkedHashMap<String, Integer[]>();
		String[] str3 = null;
		for (int i = 0; i < list.size(); i++) {
			String string = list.get(i);
			if (string == null) {
				continue;
			}
			String[] replaceStr = string.replace("；", ";").replace("：", ":")
					.split(";");
			for (int j = 0; j < replaceStr.length; j++) {
				str3 = replaceStr[j].split(":");
				map = addMap(str3, map);
			}
		}
		return map;

	}

	/**
	 * 
	 * @param str3
	 *            是否要添加到Integer数组中的元素
	 * @param map
	 *            当前map
	 * @return
	 */
	private static HashMap<String, Integer[]> addMap(String[] str3,
			HashMap<String, Integer[]> map) {
		List<Integer> list = new ArrayList<Integer>();
		// 当前map中有str3[0]这个key
		if (map.containsKey(str3[0])) {
			// str3对于的value(Integer[]类型)
			Integer[] intVal = map.get(str3[0]);
			// list = Arrays.asList(intVal);//此list不支持add、remove方法
			for (Integer i : intVal) {
				list.add(i);
			}
			// key存在,将value中不包含str3[1]的添加进去
			list.add(Integer.valueOf(str3[1]));
			map.put(str3[0], list.toArray(new Integer[list.size()]));
		} else {// 当前map中没有str3[0]这个key
				// 没有key值，新建一个Integer[]数组，长度为1
			Integer[] intVal = new Integer[1];
			intVal[0] = Integer.valueOf(str3[1]);
			map.put(str3[0], intVal);
		}
		return map;
	}
}
